/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.unicon.autoservicio.view.bean;

import com.unicon.autoservicio.dao.FacturacionDAO;
import com.unicon.autoservicio.util.FacesUtils;
import com.unicon.sdc.ds.ws.EstadoCuentaBean;
import com.unicon.sdc.ds.ws.HistorialDePagoBean;
import java.util.Date;
import java.util.List;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.event.PhaseId;

/**
 *
 * @author jcabrera
 */
public class ConsultaHistorialDePagosBean extends BaseManageBean {

    private Date desde;
    private Date hasta;
    private Double totalPagoSoles;
    private Double totalPagoDolares;
    private String tipoMoneda;
    private List<HistorialDePagoBean> lista;
    private String mensajeHistorialDePagos;

    public ConsultaHistorialDePagosBean() {
        desde = new Date(System.currentTimeMillis());
        hasta = new Date(System.currentTimeMillis());
        tipoMoneda = "A";
     
    }

    public String getExportarHistorialDePagos() {
        FacesContext fc = FacesContext.getCurrentInstance();
        UsuarioBean usuarioBean = getSessionUser();
        return fc.getExternalContext().getRequestContextPath() + "/ExportarPDF?reporte=ExportarReporteHistorialDePagos&codigoCliente=" + usuarioBean.getCodigoCliente() + "&desde=" + String.valueOf(getDesde().getTime()) + "&hasta=" + String.valueOf(getHasta().getTime()) + "&codigoObra=" + getSelectedObra() ;
    }

    public boolean btnBuscarActionPerformed(ActionEvent event) {
        setLista(null);

        if (!event.getPhaseId().equals(PhaseId.INVOKE_APPLICATION)) {
            event.setPhaseId(PhaseId.INVOKE_APPLICATION);
            event.queue();
            return true;
        }
        FacturacionDAO facturacionDao = new FacturacionDAO();
        UsuarioBean usuarioBean = getSessionUser();

        setLista(facturacionDao.obtenerHistorialDePagos(usuarioBean.getCodigoCliente(), getSelectedObra(), getDesde(), getHasta(), "", ""));


        if (getLista().size() > 0) {
           
            setTipoMoneda(getLista().get(0).getTipoMoneda());
            mensajeHistorialDePagos = "";
            calcularTotales();
        } else {
         
            mensajeHistorialDePagos = FacesUtils.getMessageResourceString("msg.reporteHistorialDePagos.sinRegistros");


        }



        return true;
    }

    /**
     * @return the desde
     */
    public Date getDesde() {
        return desde;
    }

    /**
     * @param desde the desde to set
     */
    public void setDesde(Date desde) {
        this.desde = desde;
    }

    /**
     * @return the hasta
     */
    public Date getHasta() {
        return hasta;
    }

    /**
     * @param hasta the hasta to set
     */
    public void setHasta(Date hasta) {
        this.hasta = hasta;
    }

    /**
     * @return the totalPagoSoles
     */
    public Double getTotalPagoSoles() {
        return totalPagoSoles;
    }

    /**
     * @param totalPagoSoles the totalPagoSoles to set
     */
    public void setTotalPagoSoles(Double totalPagoSoles) {
        this.totalPagoSoles = totalPagoSoles;
    }

    /**
     * @return the totalPagoDolares
     */
    public Double getTotalPagoDolares() {
        return totalPagoDolares;
    }

    /**
     * @param totalPagoDolares the totalPagoDolares to set
     */
    public void setTotalPagoDolares(Double totalPagoDolares) {
        this.totalPagoDolares = totalPagoDolares;
    }

    /**
     * @return the tipoMoneda
     */
    public String getTipoMoneda() {
        return tipoMoneda;
    }

    /**
     * @param tipoMoneda the tipoMoneda to set
     */
    public void setTipoMoneda(String tipoMoneda) {
        this.tipoMoneda = tipoMoneda;
    }

    /**
     * @return the lista
     */
    public List<HistorialDePagoBean> getLista() {
        return lista;
    }

    /**
     * @param lista the lista to set
     */
    public void setLista(List<HistorialDePagoBean> lista) {
        this.lista = lista;
    }

    /**
     * @return the mensajeHistorialDePagos
     */
    public String getMensajeHistorialDePagos() {
        return mensajeHistorialDePagos;
    }

    /**
     * @param mensajeHistorialDePagos the mensajeHistorialDePagos to set
     */
    public void setMensajeHistorialDePagos(String mensajeHistorialDePagos) {
        this.mensajeHistorialDePagos = mensajeHistorialDePagos;
    }

    private void inicializarTotales() {
        totalPagoSoles = 0.0;
        totalPagoDolares = 0.0;
    }

    private void calcularTotales() {

        inicializarTotales();
        for (HistorialDePagoBean historial : getLista()) {
            totalPagoSoles += historial.getImportePagoSoles();
            totalPagoDolares += historial.getImportePagoDolares();
        }
    }
}
